import javax.swing.* ;
import java.awt.* ;
import java.awt.event.*; // pour gérer les événements

import java.util.Vector;


import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class frmPrincipal{
/*
	private JPanel pan, pnlHeader, pnlFooter ;

	private JButton Btn_Play,Btn_Stop, Btn_Open;
*/
	private JFrame f;
	private Timer timer; 
	private BufferedImage image;
	private Vector<clsPortionTemps> Storyboardframe;
	private int nNoFrame;
	private JLabel lblSousTitre_SUD = new JLabel("SUD");
    private JPanel panPrincipal;
		
	public frmPrincipal(Vector<clsPortionTemps> Storyboardframe) // le constructeur
	{
		this.Storyboardframe= (Vector) Storyboardframe.clone();
		nNoFrame=0;
		System.out.println("Constructeur");
		// Création et lancement du timer
		timer = createTimer ();
		timer.start ();
		
	} // fin du constructeur

    // to embed in a JPanel, JFrame or other GUI widget
    public JLabel getJLabel(String filename)
	{
        try { image = ImageIO.read(new File(filename)); }
        catch(IOException e) {
            e.printStackTrace();
            throw new RuntimeException("Could not open file: " + filename);
        }
        if (image == null)
            throw new RuntimeException("Invalid image file: " + filename);
		
        if (image == null) return null;         // no image available
        ImageIcon icon = new ImageIcon(image);
        return new JLabel(icon);
    }


	// view on-screen, creating new frame if necessary
	public void show()
	{
		// create the GUI for viewing the image if needed
		if (f == null) 
		{
			f = new JFrame();
			
			// Creation du panel
			panPrincipal=new JPanel();
			panPrincipal.setLayout(new BorderLayout());	
			//f.setContentPane(getJLabel("image01.jpg"));
			panPrincipal.add(getJLabel("image01.jpg"), BorderLayout.CENTER);
			panPrincipal.add(lblSousTitre_SUD, BorderLayout.SOUTH);
			f.setContentPane(panPrincipal);
			
			
			f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
			f.setTitle("SBP -> StoryBoard Player");
			f.setResizable(false);
			f.setSize (800, 500);
			f.pack();
			f.setVisible(true);
		}
		// draw
		f.repaint();
	}


	// Méthode renvoyant un timer prêt à démarrer
	private Timer createTimer ()
	{
	 // Création d'une instance de listener 
	 // associée au timer
	 ActionListener action = new ActionListener ()
	   {
		 // Méthode appelée à chaque tic du timer
		 public void actionPerformed (ActionEvent event)
		 {
			Boolean flgHaveTexte = false;
			 clsPortionTemps enCours;
			 
			 enCours = Storyboardframe.elementAt(nNoFrame);
			 Vector enCoursEvenement=enCours.getLstEvenement();
			 
			panPrincipal.removeAll();
			 
			for(int i=0;i<enCoursEvenement.size(); i++)
			{
				if (enCoursEvenement.get(i) instanceof clsFrameImage)
				{
					panPrincipal.add(getJLabel(((clsFrameImage) enCoursEvenement.get(i)).getImageName()), BorderLayout.CENTER);
					System.out.println(((clsFrameImage) enCoursEvenement.get(i)).getImageName());
				}
				if (enCoursEvenement.get(i) instanceof clsFrameTexte)
				{
					panPrincipal.add(new JLabel("SUD\nTITTO"), BorderLayout.SOUTH);
					flgHaveTexte=true;
					//this.lstEvenement.add((clsFrameImage) objEvenement);
				}
				//System.out.println(((clsFrameImage) enCoursEvenement.get(i)).getImageName());
			}
			if(flgHaveTexte==false)
			{
				panPrincipal.add(new JLabel("-"), BorderLayout.SOUTH);
			}
			 
			 f.setTitle("SBP -> StoryBoard Player : " + nNoFrame);
			 //f.setContentPane(getJLabel((String)enCoursEvenement.elementAt(0)));
			 f.setContentPane(panPrincipal);
			 
			 
			 
			 nNoFrame++;
			 if(nNoFrame>10)
			 {
				 timer.stop();
			 }
			 f.pack();
			 f.repaint();
		 }
	   };
	   
	 // Création d'un timer qui génère un tic
	 // chaque 200 millième de seconde
	 return new Timer (200, action);
	}  



} // fin de classe frmPrincipal

